package utils
{
	
	/**
	 * ...
	 * @author FireKnight
	 */
	public class ArrayTools
	{
		
		public function ArrayTools()
		{
		
		}
		
		//找出数组中相同/重复的元素，并记录重复次数
		public static function getRepeat(a:Array):Array
		{
			var m:Number = 0;
			var repeat:Array = []; //记录重复的元素
			var repeatNum:Array = []; //记录重复次数
			var noRepeat:Array = [] //记录没有重复的元素
			var n:int = a.length;
			for (var i:uint = 0; i < n; i++)
			{
				m = 1;
				if (a[i] == -1)
				{
					continue;
				}
				for (var j:uint = i + 1; j < n; j++)
				{
					if (a[i] == a[j])
					{
						m++;
						a[j] = -1;
					}
				}
				if (m > 1)
				{
					
					repeat.push(a[i]);
					repeatNum.push(m);
					
				}
				else if (m == 1)
				{
					noRepeat.push(a[i])

				}
			}
			return [repeat, repeatNum, noRepeat] //返回 重复的元素，重复次数，没有重复的元素
		} //end getRepeat
		
		//去除重复
		public static function arrDelRepeat(arr:Array):Array
		{
			var result:Array = getRepeat(arr);
			var newArray:Array=[];
			newArray=newArray.concat(result[0], result[2]);
			
			return newArray;
		}
		
		
		
		//随机数组
		public static function randomArr(arr:Array):Array
		{
			return arr.sort(function():int{return Math.random() > .5 ? 1 : -1});;
		}
		
		//一元数组复制
		public static function cloneArray(arr:Array):Array
		{
			var s:Array = new Array();
			for (var i:uint = 0; i < arr.length; i++)
			{
				s.push(arr[i]);
			}
			return s;
		}
		
		//返回一个其中一个元素被选中，然后按余下元素顺序排列的数组  
		public static function getCurArray(s:Array, index:uint):Array
		{
			var arr:Array = [];
			//如果需保持最后一个元素在最后面 i<s.length-1,否则 i<s.length，这是前者
			for (var i:uint = index + 1; i < s.length - 1; i++)
			{
				
				arr.push(s[i]);
			}
			
			for (var o:uint = 0; o < index; o++)
			{
				
				arr.push(s[o]);
			}
			arr.push(s[s.length - 1]); //此处是使最后一个元素始终保持在最后一个
			return arr;
		}
	
	}

}